﻿//using Microsoft.AspNetCore.Mvc.ModelBinding;
//using Newtonsoft.Json;
//using System;
//using System.Threading.Tasks;

//namespace HiStore.Mapper.ModelBinder
//{
//    /// <summary>
//    /// 复杂模型绑定
//    /// </summary>
//    /// <typeparam name="T"></typeparam>
//    public class NestedModelBinder<T>: IModelBinder
//    {
//        public Task BindModelAsync(ModelBindingContext bindingContext)
//        {
//            var modelName = bindingContext.ModelName;
//            try
//            {
//                // Try to fetch the value of the argument by name
//                var valueProviderResult = bindingContext.ValueProvider.GetValue(modelName);

//                if (valueProviderResult == ValueProviderResult.None)
//                {
//                    return Task.CompletedTask;
//                }
//                bindingContext.ModelState.SetModelValue(modelName, valueProviderResult);

//                var value = valueProviderResult.FirstValue;

//                if (string.IsNullOrEmpty(value))
//                {
//                    return Task.CompletedTask;
//                }
//                var model = JsonConvert.DeserializeObject<T>(value);
//                bindingContext.Result = ModelBindingResult.Success(model);
//                return Task.CompletedTask;
//            }
//            catch (Exception e)
//            {
//                return Task.CompletedTask;
//            }
//        }
//    }
//}
